কাস্টম ডাটাটাইপ তৈরি করার প্রক্রিয়া এমন একটি ডাটাটাইপ তৈরি করা যা ডেটাবেসে ব্যবহারকারীর প্রয়োজন অনুযায়ী কাস্টম বৈশিষ্ট্য সহ থাকে। এটি সাধারণত Java প্রোগ্রামিং বা SQL ডেটাবেস ব্যবহারের ক্ষেত্রে করা হয়, যেখানে আপনি ডাটাবেসে সংরক্ষিত তথ্যের জন্য নতুন ধরনের ডেটা তৈরি করতে চান। কাস্টম ডাটাটাইপ ডেটাবেসে নতুন বৈশিষ্ট্য যুক্ত করতে, তথ্যের ফর্ম্যাট কাস্টমাইজ করতে এবং সিস্টেমের পারফরম্যান্স বা ব্যবহারিক কাজের জন্য আরও বেশি উপযোগী করে তোলে।
Hibernate ORM ব্যবহার করার সময় আপনি custom data type তৈরি করতে পারেন যাতে কিছু প্রক্রিয়া বা নিয়ম অনুসারে ডেটা সংরক্ষণ করা যায়। সাধারণত Hibernate-এ @Type
অ্যানোটেশন ব্যবহার করে কাস্টম ডাটাটাইপ তৈরি করা হয়।
এখানে আমরা Hibernate এবং Java ক্লাসের মাধ্যমে কাস্টম ডাটাটাইপ তৈরি করার উদাহরণ দেখবো।
ধরা যাক, আপনি একটি CustomDate ক্লাস তৈরি করতে চান, যা Java Date
এবং ডেটাবেসের মধ্যে সংরক্ষণ করতে কাস্টম ফরম্যাটে থাকবে।
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
public class CustomDate implements Serializable {
private Date date;
public CustomDate(Date date) {
this.date = date;
}
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
return sdf.format(date);
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
এই CustomDate ক্লাসটি Date
অবজেক্টকে কাস্টম ফরম্যাটে (যেমন dd-MM-yyyy
) রূপান্তরিত করে একটি স্ট্রিং হিসেবে প্রদান করবে।
এখন আপনাকে Hibernate-এর জন্য একটি কাস্টম টাইপ ক্লাস তৈরি করতে হবে যা CustomDate
টাইপকে সঠিকভাবে হ্যান্ডেল করবে।
import org.hibernate.type.AbstractSingleColumnStandardBasicType;
import org.hibernate.type.descriptor.sql.SqlTypeDescriptor;
import org.hibernate.type.descriptor.sql.VarcharTypeDescriptor;
public class CustomDateType extends AbstractSingleColumnStandardBasicType<CustomDate> {
public static final CustomDateType INSTANCE = new CustomDateType();
public CustomDateType() {
super(VarcharTypeDescriptor.INSTANCE, CustomDateTypeDescriptor.INSTANCE);
}
@Override
public String getName() {
return "customDate";
}
}
এখানে:
CustomDate
টাইপকে সঠিকভাবে স্টোর এবং রিট্রিভ করার জন্য VarcharTypeDescriptor
এবং CustomDateTypeDescriptor
ব্যবহার করে।CustomDateTypeDescriptor.INSTANCE
ব্যবহার করে CustomDate টাইপের সঠিক মান সংরক্ষণ এবং পুনরুদ্ধার করার জন্য কাস্টম লজিক তৈরি করা যায়।এখন আপনার Hibernate Entity ক্লাসে এই কাস্টম টাইপটি ব্যবহার করতে হবে। এই জন্য @Type অ্যানোটেশন ব্যবহার করতে হবে।
import org.hibernate.annotations.Type;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class User {
@Id
private int id;
private String name;
@Type(type = "customDate")
private CustomDate dateOfBirth;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public CustomDate getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(CustomDate dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
}
এখানে:
CustomDate
টাইপকে Hibernate Entity-এ যুক্ত করেছি।Hibernate কনফিগারেশন ফাইলে আপনাকে কাস্টম টাইপটি রেজিস্টার করতে হবে।
<hibernate-configuration>
<session-factory>
<!-- Other Hibernate properties -->
<property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
<property name="hibernate.connection.driver_class">org.h2.Driver</property>
<property name="hibernate.connection.url">jdbc:h2:~/test;AUTO_SERVER=TRUE</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password"></property>
<!-- Register custom Hibernate type -->
<mapping class="com.example.User"/>
</session-factory>
</hibernate-configuration>
এখন আপনার User ক্লাসে CustomDate
টাইপটি ব্যবহার করতে পারবেন, এবং এটি Hibernate স্বয়ংক্রিয়ভাবে ডেটাবেসে custom format হিসেবে সংরক্ষণ করবে।
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import java.util.Date;
public class Main {
public static void main(String[] args) {
// Hibernate session initialization
SessionFactory factory = new Configuration()
.configure("hibernate.cfg.xml")
.addAnnotatedClass(User.class)
.buildSessionFactory();
Session session = factory.getCurrentSession();
try {
// Create a User object
User user = new User();
user.setId(1);
user.setName("John Doe");
user.setDateOfBirth(new CustomDate(new Date()));
// Start a transaction
session.beginTransaction();
// Save the User object
session.save(user);
// Commit the transaction
session.getTransaction().commit();
} finally {
factory.close();
}
}
}
এখন CustomDate টাইপটি Hibernate দ্বারা ডেটাবেসে সঠিক ফরম্যাটে সংরক্ষণ হবে। CustomDate এর toString()
মেথড অনুযায়ী ডেটা স্ট্রিং ফরম্যাটে ডেটাবেসে ইনসার্ট হবে।
Hibernate এর সাথে কাস্টম ডাটাটাইপ তৈরি করা একটি শক্তিশালী এবং কার্যকরী প্রক্রিয়া, যা আপনাকে Java ক্লাসে নির্দিষ্ট ধরনের ডেটা সংরক্ষণ এবং প্রক্রিয়া করতে সহায়ক করে। কাস্টম ডাটাটাইপ তৈরি করতে আপনাকে:
এই প্রক্রিয়া আপনাকে ডেটাবেসের কাঠামোতে কাস্টম ডেটা ফরম্যাট সংরক্ষণ করার সুযোগ দেয় এবং উন্নত কার্যক্ষমতা প্রদান করে।
common.read_more